# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# 建立者:        Young  
# Name:         demo10.08
# Description:
# Author:       $赵怡蕾
# Date:         2019/3/6
#-------------------------------------------------------------------------------

class Rectangle:
    def __init__(self):
        self.width = 0
        self.height = 0
        self.left = 0
        self.top = 0
    # 对属性执行写操作时调用该方法，当设置size属性和position属性时实际上
    # 设置了width属性、height属性以及left属性和top属性的值
    def __setattr__(self, name, value):
        print("{}被设置，新值为{}".format(name,value))
        if name == 'size':
            self.width,self.height = value
        elif name == 'position':
            self.left,self.top = value
        else:
            # __dict__是内部维护的一个特殊成员变量，用于保存成员变量的值，所以这条语句必须加上
            self.__dict__[name] = value
    # 对属性执行读操作时调用该方法，当读取size属性和position属性值时实际上
    # 返回的是width属性、height属性以及left属性和top属性的值
    def __getattr__(self, name):
        print("{}被获取".format(name))
        if name == 'size':
            return self.width,self.height
        elif name == 'position':
            return self.left,self.top
    # 当删除属性时调用该方法，当删除size属性和position属性时，实际上是
    # 重新将width属性、height属性、left属性和top属性设置为0
    def __delattr__(self, name):
        if name == 'size':
            self.width,self.height = 0,0
        elif name == 'position':
            self.left,self.top = 0,0

r = Rectangle()
# 设置size属性的值
r.size = 300,500
# 设置position属性的值
r.position = 100,400
# 获取size属性的值
print('size','=',r.size)
# 获取position属性的值
print('position','=',r.position)
# 删除size属性和position属性
del r.size,r.position
print(r.size)
print(r.position)